#include <memory>
#include <set>
#include <iostream>
#include "Quote.h"

class Basket
{
private:
    // 比价 shared_ptr，mulitiset 成员会用到它
    static bool compare(const std::shared_ptr<Quote> &lhs, const std::shared_ptr<Quote> &rhs)
        { return lhs->isbn() < rhs->isbn(); }
    // multiset 保存多个报价，按照 compare 成员排序
    std::multiset<std::shared_ptr<Quote>, decltype(compare)*> items 
        { compare };
public:
    Basket();
    ~Basket();
    void add_item(const std::shared_ptr<Quote> &sale) 
        { items.insert(sale); }
    void add_item(const Quote&); // 拷贝给定的对象
    void add_item(Quote&&); // 移动给定的对象
    // 打印每本书的总价和购物篮中所有书的总价
    double total_receipt(std::ostream&) const;
};

Basket::Basket()
{
}

Basket::~Basket()
{
}
